package com.palmshop.online.controller;

import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.palmshop.online.entity.PalmResult;
import com.palmshop.online.service.ShopInfoService;

/**
 * 订单、店铺、商品综合相关的controller
 * @author quan
 *
 */
@Controller
@RequestMapping("/online")
public class ShopInfoContorller {

	@Resource
	private ShopInfoService service;//service注入
	
	
	/**
	 * 向销售单表添加一条销售信息
	 * @param after:订单中包含的商品的相关信息
	 * @param saleListTotal：订单总额
	 * @param cusUnique：用户唯一性标识
	 * @param saleListAddress：收货地址
	 * @param confirmMsg：订单备注信息
	 * @param shopUnique：店铺唯一性标识
	 * @return json
	 */
	@RequestMapping("/addSale.do")
	@ResponseBody
	public PalmResult addSale(String[] after, Double saleListTotal,
			String cusUnique,String saleListAddress,String confirmMsg,String shopUnique) {

		return service.addrSaleList(after, saleListTotal, cusUnique,saleListAddress,confirmMsg,shopUnique);

	}
	

	/**
	 * app使用
	 * 向销售单添加一条新的记录信息
	 * @param goodsIds：商品id
	 * @param goodsCount:商品数量
	 * @param goodsPrice：商品价格
	 * @param goodsUniques：商品唯一性标识
	 * @param basketIds：购物车id
	 * @param saleListTotal:订单总金额
	 * @param cusUnique：用户唯一性标识
	 * @param saleListAddress：订单收货地址
	 * @param confirmMsg：订单备注信息
	 * @param shopUnique：商铺唯一性标识
	 * @return json
	 */
	@RequestMapping("/addSaleApp.do")
	@ResponseBody
	public PalmResult addSaleApp(String goodsIds,String goodsCount,String goodsPrice,String goodsUniques,String basketIds,
			 Double saleListTotal,String cusUnique,String saleListAddress,String confirmMsg,String shopUnique) {
		String[]after=new String[5];
		after[0]=goodsIds;
		after[1]=goodsCount;
		after[2]=goodsPrice;
		after[3]=goodsUniques;
		after[4]=basketIds;
		return service.addrSaleList(after, saleListTotal, cusUnique,saleListAddress,confirmMsg,shopUnique);

	}
	
	
	/**
	 * 根据订单的唯一性标识删除对应的订单信息
	 * @param saleListUnique:订单唯一性标识
	 * @return json
	 */
	@RequestMapping("/deleteSale.do")
	@ResponseBody
	public PalmResult deleteSale(String saleListUnique){
		return service.deleteSale(saleListUnique);
	}

	/**
	 * 个人中心确认已收货
	 * @param saleListUnique:订单唯一性标识
	 * @param state：订单状态
	 * @return json
	 */
	@RequestMapping("/saleConfirm.do")
	@ResponseBody
	public PalmResult saleConfirm(String saleListUnique,Integer state){
		Map<String,Object>map=new HashMap<String,Object>();
		map.put("saleListUnique", saleListUnique);
		map.put("state", state);
		
		return service.saleConfirm(map);
	}
	
	
	
	/**
	 * 根据订单唯一性标识查询订单的基本信息
	 * @param saleListUnique:订单唯一性标识
	 * @return json
	 */
	@RequestMapping("/findSaleById.do")
	@ResponseBody
	public PalmResult findSaleById(String saleListUnique){
		
		return service.findSaleById(saleListUnique);
		
	}
	
	/**
	 * 个人中心 根据用户唯一性标识查询该账户下 不同订单状态对应的 订单数量
	 * @param cusUnique:用户唯一性标识
	 * @return json
	 */
	@RequestMapping("/findSaleStateTotals.do")
	@ResponseBody
	public PalmResult findSaleStateTotals(String cusUnique){
		return service.findSaleStateTotals(cusUnique);
	}
	
	/**
	 * 个人中心 根据用户唯一性标识和 订单的状态查询对应的订单数量
	 * @param cusUnique：用户唯一性标识
	 * @param state：订单状态
	 * @return json
	 */
	@RequestMapping("/findSaleTotals.do")
	@ResponseBody
	public PalmResult findSaleTotals(String cusUnique,Integer state){
		return service.findSaleTotals(cusUnique, state);
	}
	
	
	/**
	 * 个人中心根据用户唯一性标识和 订单状态查询对应的订单信息
	 * @param cusUnique：用户唯一性标识
	 * @param state：订单状态
	 * @param pages：显示的页码数
	 * @param perpage：每页显示的数量
	 * @return json
	 */
	@RequestMapping("/findSaleByCusId.do")
	@ResponseBody
	public PalmResult findSaleByCusId(String cusUnique,Integer state,Integer pages,Integer perpage){
		
		return service.findSaleByCusId(cusUnique,state,pages,perpage);
	}
	
	/**
	 * 商品搜索框手动查询商品信息
	 * @param goodsName：搜索框中输入的商品名称信息
	 * @param shopUnique：店铺唯一性标识
	 * @param goodsKind：商品分类信息
	 * @param pages：商品页码数
	 * @param perpage：每页显示的商品数
	 * @return json
	 */
	@RequestMapping("/findGoodsBySearch.do")
	@ResponseBody
	public PalmResult findGoodsBySearch(String goodsName,String shopUnique,String goodsKind,Integer pages,Integer perpage){
		return service.findGoodsBySearch(goodsName,shopUnique,goodsKind,pages,perpage);
	}
	
	/**
	 * 根据经纬度查询附近的商铺信息
	 * @param shopLongitude:经度
	 * @param shopLatitude：纬度
	 * @return json
	 */
	@RequestMapping("/findShopByLocation.do")
	@ResponseBody
	public PalmResult findShopByLocation(String shopLongitude,String shopLatitude){
		
		Map<String,Object> map=new HashMap<String,Object>();
		map.put("shopLongitude", shopLongitude);
		map.put("shopLatitude", shopLatitude);
		return service.findShopByLocation(map);
	}
	
	
	/**
	 * 个人中心 根据订单唯一性标识查询订单明细信息
	 * @param saleListUnique：订单唯一性标识
	 * @return json
	 */
	@RequestMapping("/findDetailPer.do")
	@ResponseBody
	public PalmResult findDetailPer(String saleListUnique){
		return service.findDetailPer(saleListUnique);
	}
	
	/**
	 * 根据店铺唯一性标识查询商品信息
	 * @param shopUnique：店铺唯一性标识
	 * @return json
	 */
	@RequestMapping("/findByCondition.do")
	@ResponseBody
	public PalmResult findByCondition(String shopUnique) {
		return service.findByCondition(shopUnique);
	}
	
	/**
	 * 根据输入的店铺名称和 经纬度查询附近的店铺信息
	 * @param shopName：搜索框输入的名称
	 * @param shopLongitude：店铺经度
	 * @param shopLatitude：店铺纬度
	 * @return json
	 */
	@RequestMapping("/findShopBySearch.do")
	@ResponseBody
	public PalmResult findShopBySearch(String shopName,String shopLongitude,String shopLatitude){
		Map<String,Object> map=new HashMap<String,Object>();
		map.put("shopLongitude", shopLongitude);
		map.put("shopLatitude", shopLatitude);
		map.put("shopName", shopName);
		return service.findShopBySearch(map);
	}
	
	/**
	 * 根据商铺唯一性标识查询商铺的基本信息
	 * @param shopUnique:店铺唯一性标识
	 * @return json
	 */
	@RequestMapping("/findShopInfo.do")
	@ResponseBody
	public PalmResult findShopInfo(String shopUnique){
		return service.findShopInfo(shopUnique);
	}
	
	
}
